question: private void processComment ( DocCommentNode comment ) { this . key = new KeyPair ( "IGNORE" , - 1 ) ; hasDefaultProperty = false ; if ( comment . def instanceof PackageDefinitionNode ) { processPackage ( ( PackageDefinitionNode ) comment . def ) ; } else if ( comment . def instanceof ClassDefinitionNode ) { ClassDefinitionNode cd = ( ClassDefinitionNode ) comment . def ; processClassAndInterface ( cd ) ; } else if ( comment . def instanceof FunctionDefinitionNode ) { processFunction ( ( FunctionDefinitionNode ) comment . def ) ; } else if ( comment . def instanceof VariableDefinitionNode ) { processField ( ( VariableDefinitionNode ) comment . def ) ; } else { this . key . name = "Unsupported" ; } if ( this . key . type == - 1 ) return ; this . key . isStatic = isStatic ; if ( comment . getId ( ) != null ) processTags ( comment . getId ( ) ) ; if ( ! exclude && hasInheritTag ) { processInheritDoc ( ) ; } processMetadata ( comment ) ; if ( comment . def instanceof ClassDefinitionNode && abcClass != null ) { if ( ! hasDefaultProperty ) { ClassDefinitionNode cd = ( ClassDefinitionNode ) comment . def ; List < MetaData > metadataList = abcClass . getMetaData ( StandardDefs . MD_DEFAULTPROPERTY , true ) ; if ( metadataList . size ( ) != 0 ) { inheritMetaDataComment ( cd . debug_name , metadataList . get ( 0 ) ) ; } } } }
target:  processComment() extracts the necessary information from the DocCommentNode using its helper methods. The helper methods use the logic derived from the asc parser. It also processes any  inheritDoc tags.