@Override
public void visitFunctionDeclaration(FunctionDeclaration functionDeclaration) throws IOException {
boolean isTopLevelDeclaration = modelStack.peek() instanceof CompilationUnitModel;
if (functionDeclaration.isPublicApi() || isTopLevelDeclaration) {
MethodModel methodModel = new MethodModel();
modelStack.push(methodModel);
consumeRecordedAnnotations();
if (isTopLevelDeclaration) {
handleExcludeClassByDefault(methodModel);
}
recordAsdoc(functionDeclaration);
recordAsdoc(functionDeclaration.getSymbol());
consumeRecordedAsdoc();
generateMemberModifiers(functionDeclaration);
methodModel.setOverride(functionDeclaration.isOverride());
methodModel.setFinal(functionDeclaration.isFinal());
methodModel.setMethodType(functionDeclaration.isGetter() ? MethodType.GET
: functionDeclaration.isSetter() ? MethodType.SET
: null);
functionDeclaration.getIde().visit(this);
generateSignatureAsApiCode(functionDeclaration.getFun());