org_aspectj_systemtest_incremental_tools_OutputLocationManagerTests_java
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding
public char[] signature(ClassFile classFile) {
        MethodBinding methodBinding;
        MethodBinding methodBinding2;
        boolean needSynthetics;
        MethodBinding methodBinding3;
        if (this.signature != null) {
            if ((this.tagBits & 0x800L) != 0L) {
                MethodBinding methodBinding4;
                MethodBinding methodBinding5;
                boolean needSynthetics2;
                boolean isConstructor = this.isConstructor();
                TypeBinding[] targetParameters = this.parameters;
                boolean bl = needSynthetics2 = isConstructor && ((ReferenceBinding)MethodBinding.declaringClass_aroundBody55$advice(this, methodBinding5 = this, OwningClassSupportForMethodBindings.aspectOf(), methodBinding5, null)).isNestedType() && !((ReferenceBinding)MethodBinding.declaringClass_aroundBody57$advice(this, methodBinding4 = this, OwningClassSupportForMethodBindings.aspectOf(), methodBinding4, null)).isStatic();
                if (needSynthetics2) {
                    MethodBinding methodBinding6 = this;
                    ReferenceBinding[] syntheticArgumentTypes = ((ReferenceBinding)MethodBinding.declaringClass_aroundBody59$advice(this, methodBinding6, OwningClassSupportForMethodBindings.aspectOf(), methodBinding6, null)).syntheticEnclosingInstanceTypes();
                    if (syntheticArgumentTypes != null) {
                        int i = 0;
                        int count = syntheticArgumentTypes.length;
                        while (i < count) {
                            ReferenceBinding syntheticArgumentType = syntheticArgumentTypes[i];
                            if ((syntheticArgumentType.tagBits & 0x800L) != 0L) {
                                Util.recordNestedType(classFile, syntheticArgumentType);
                            }
                            ++i;
                        }
                    }
                    if (this instanceof SyntheticMethodBinding) {
                        targetParameters = ((SyntheticMethodBinding)this).targetMethod.parameters;
                    }
                }
                if (targetParameters != Binding.NO_PARAMETERS) {
                    int i = 0;
                    int max = targetParameters.length;
                    while (i < max) {
                        TypeBinding targetParameter = targetParameters[i];
                        TypeBinding leafTargetParameterType = targetParameter.leafComponentType();
                        if ((leafTargetParameterType.tagBits & 0x800L) != 0L) {
                            Util.recordNestedType(classFile, leafTargetParameterType);
                        }
                        ++i;
                    }
                }
                if (needSynthetics2) {
                    int i = targetParameters.length;
                    int extraLength = this.parameters.length;
                    while (i < extraLength) {
                        TypeBinding parameter = this.parameters[i];
                        TypeBinding leafParameterType = parameter.leafComponentType();
                        if ((leafParameterType.tagBits & 0x800L) != 0L) {
                            Util.recordNestedType(classFile, leafParameterType);
                        }
                        ++i;
                    }
                }
                if (this.returnType != null) {
                    TypeBinding ret = this.returnType.leafComponentType();
                    if ((ret.tagBits & 0x800L) != 0L) {
                        Util.recordNestedType(classFile, ret);
                    }
                }
            }
            return this.signature;
        }
        StringBuilder buffer = new StringBuilder((this.parameters.length + 1) * 20);
        buffer.append('(');
        TypeBinding[] targetParameters = this.parameters;
        boolean isConstructor = this.isConstructor();
        if (isConstructor && ((ReferenceBinding)MethodBinding.declaringClass_aroundBody61$advice(this, methodBinding3 = this, OwningClassSupportForMethodBindings.aspectOf(), methodBinding3, null)).isEnum()) {
            buffer.append(ConstantPool.JavaLangStringSignature);
            buffer.append(TypeBinding.INT.signature());
        }
        boolean bl = needSynthetics = isConstructor && ((ReferenceBinding)MethodBinding.declaringClass_aroundBody63$advice(this, methodBinding2 = this, OwningClassSupportForMethodBindings.aspectOf(), methodBinding2, null)).isNestedType() && !((ReferenceBinding)MethodBinding.declaringClass_aroundBody65$advice(this, methodBinding = this, OwningClassSupportForMethodBindings.aspectOf(), methodBinding, null)).isStatic();
        if (needSynthetics) {
            MethodBinding methodBinding7 = this;
            ReferenceBinding[] syntheticArgumentTypes = ((ReferenceBinding)MethodBinding.declaringClass_aroundBody67$advice(this, methodBinding7, OwningClassSupportForMethodBindings.aspectOf(), methodBinding7, null)).syntheticEnclosingInstanceTypes();
            if (syntheticArgumentTypes != null) {
                int i = 0;
                int count = syntheticArgumentTypes.length;
                while (i < count) {
                    ReferenceBinding syntheticArgumentType = syntheticArgumentTypes[i];
                    if ((syntheticArgumentType.tagBits & 0x800L) != 0L) {
                        this.tagBits |= 0x800L;
                        Util.recordNestedType(classFile, syntheticArgumentType);
                    }
                    buffer.append(syntheticArgumentType.signature());
                    ++i;
                }
            }
            if (this instanceof SyntheticMethodBinding) {
                targetParameters = ((SyntheticMethodBinding)this).targetMethod.parameters;
            }
        }
        if (targetParameters != Binding.NO_PARAMETERS) {
            int i = 0;
            int max = targetParameters.length;
            while (i < max) {
                TypeBinding targetParameter = targetParameters[i];
                TypeBinding leafTargetParameterType = targetParameter.leafComponentType();
                if ((leafTargetParameterType.tagBits & 0x800L) != 0L) {
                    this.tagBits |= 0x800L;
                    Util.recordNestedType(classFile, leafTargetParameterType);
                }
                buffer.append(targetParameter.signature());
                ++i;
            }
        }
        if (needSynthetics) {
            MethodBinding methodBinding8 = this;
            SyntheticArgumentBinding[] syntheticOuterArguments = ((ReferenceBinding)MethodBinding.declaringClass_aroundBody69$advice(this, methodBinding8, OwningClassSupportForMethodBindings.aspectOf(), methodBinding8, null)).syntheticOuterLocalVariables();
            int count = syntheticOuterArguments == null ? 0 : syntheticOuterArguments.length;
            int i = 0;
            while (i < count) {
                buffer.append(syntheticOuterArguments[i].type.signature());
                ++i;
            }
            i = targetParameters.length;
            int extraLength = this.parameters.length;
            while (i < extraLength) {
                TypeBinding parameter = this.parameters[i];
                TypeBinding leafParameterType = parameter.leafComponentType();
                if ((leafParameterType.tagBits & 0x800L) != 0L) {
                    this.tagBits |= 0x800L;
                    Util.recordNestedType(classFile, leafParameterType);
                }
                buffer.append(parameter.signature());
                ++i;
            }
        }
        buffer.append(')');
        if (this.returnType != null) {
            TypeBinding ret = this.returnType.leafComponentType();
            if ((ret.tagBits & 0x800L) != 0L) {
                this.tagBits |= 0x800L;
                Util.recordNestedType(classFile, ret);
            }
            buffer.append(this.returnType.signature());
        }
        int nameLength = buffer.length();
        this.signature = new char[nameLength];
        buffer.getChars(0, nameLength, this.signature, 0);
        return this.signature;
    }
 -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Arrays.hashCode(char[]): int -> java.lang.StringBuilder.append(char[]): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.getChars(int,int,char[],int): void
 [CALL] -> java.lang.StringBuilder.append(char): java.lang.StringBuilder [CALL] [EXIT] -> java.lang.StringBuilder.append(char): java.lang.StringBuilder [CALL] [EXIT] [CALL] -> java.util.Set.contains(java.lang.Object): boolean [CALL] [CALL] -> java.util.Arrays.hashCode(char[]): int [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.StringBuilder.append(char[]): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.getChars(int,int,char[],int): void [EXIT]