protected override void initializeMethods() {
            if (classInfo == null || classInfo.methods == null) {
                return;
            }
            initializeBaseTypes();
            
            foreach (var m in classInfo.methods) {
                var method = new ClassFileMethod(this, m.name, m.descriptor);
                method.modifiers = m.modifiers;
                methods.add(method);
                if (m.signature == null) {
                    method.returnType = getTypeInfo(m.returnType);
                    int i = 0;
                    foreach (var p in m.parameters) {
                        var pi = new ParameterInfo(i++, getTypeInfo(p.type));
                        method.parameters.add(pi);
                        if (p.annotations == null) {
                            pi.annotations = Collections.emptyList();
                        } else {
                            pi.annotations = buildAnnotationValues(p.annotations);
                        }
                    }
                    if (m.exceptions == null) {
                        method.exceptions = Collections.emptyList();
                    } else {
                        var ex = new ArrayList<TypeInfo>();
                        foreach (var s in  m.exceptions) {
                            var t = typeSystem.getType(s);
							if (hasGenericArguments(t)) {
                                t = t.RawType;
                            }
                            ex.add(t);
                        }
                        method.exceptions = ex;
                    }
                    method.genericArguments = Collections.emptyList();
                } else {
                    genericsScope.enterScope();
                    var genArgs = new ArrayList<TypeInfo>();
                    foreach (var t in m.signature.FormalTypeParameters) {
                        var tp = new GenericParameterType(this.Library, t.Name, null);
                        genArgs.add(tp);
                        genericsScope.declareBinding(t.Name, tp);
                    }
                    method.genericArguments = genArgs;
                    int i = 0;
                    foreach (var t in m.signature.getFormalTypeParameters()) {
                        if (t.FormalTypeParameterBounds.any()) {
                            foreach (var ts in t.FormalTypeParameterBounds) {
                                ((GenericParameterType)genArgs[i]).genericParameterBounds.add(getTypeInfo(ts));
                            }
                        }
                        i++;
                    }
                    method.returnType = getTypeInfo(m.signature.ReturnType);
                    i = 0;
                    foreach (var param in m.signature.Parameters) {
                        var annotations = m.parameters[i].annotations;
                        var pi = new ParameterInfo(i++, getTypeInfo(param));
                        method.parameters.add(pi);
                        if (annotations == null) {
                            pi.annotations = Collections.emptyList();
                        } else {
                            pi.annotations = buildAnnotationValues(annotations);
                        }
                    }
                    var excepts = new ArrayList<TypeInfo>();
                    foreach (var t in m.signature.Exceptions) {
                        excepts.add(getTypeInfo(t));
                    }
                    method.exceptions = excepts;
                    genericsScope.leaveScope();
                }
                if (m.defaultValue != null) {
                    method.defaultValue = buildAnnotationArrayElement(m.defaultValue);
                }
                if (m.annotations == null) {
                    method.annotations = Collections.emptyList();
                } else {
                    method.annotations = buildAnnotationValues(m.annotations);
                }
            }
            
            classInfo.methods = null;
            if (classInfo.fields == null) {
                classInfo = null;
                genericsScope = null;
            }
        }
 public static bool isDeprecated(Library typeSystem, ParameterInfo parameter) {
     return containsDeprecated(parameter.Annotations);
 }
 private void initialize() {
     if (returnType != null) {
         return;
     }
     
     if (genericArguments == null) {
         genericArguments = ReflectionHelper.bindGenericParameters(typeSystem, genericsScope, genericMethodDefinition.GenericArguments);
     } else {
         ReflectionHelper.declareGenericTypeBindings(genericsScope, genericMethodDefinition.GenericArguments, genericArguments);
     }
     returnType = ReflectionHelper.bindGenericParameters(typeSystem, genericsScope, genericMethodDefinition.ReturnType);
     parameters = new ArrayList<ParameterInfo>();
     foreach (var p in genericMethodDefinition.Parameters) {
         var newp = new ParameterInfo(p.Position, ReflectionHelper.bindGenericParameters(typeSystem, genericsScope, p.Type));
         newp.name = p.Name;
         parameters.add(newp);
     }
     exceptions = ReflectionHelper.bindGenericParameters(typeSystem, genericsScope, genericMethodDefinition.Exceptions);
     genericsScope = null;
 }
 public static MemberInfo getInfo(ParameterInfo parameter, MethodInfo method) {
     var result = parameter.getUserData(typeof(LocalMemberInfo));
     if (result == null) {
         result = new LocalMemberInfo(parameter.Name, parameter.Type, method, true);
         parameter.addUserData(result);
     }
     return result;
 }
 private void initialize() {
     if (returnType != null) {
         return;
     }
     
     returnType = ReflectionHelper.getRawType(genericMethodDefinition.DeclaringType, genericMethodDefinition.ReturnType);
     parameters = new ArrayList<ParameterInfo>();
     foreach (var p in genericMethodDefinition.Parameters) {
         var newp = new ParameterInfo(p.Position, ReflectionHelper.getRawType(genericMethodDefinition.DeclaringType, p.Type));
         newp.name = p.Name;
         parameters.add(newp);
     }
     
     var exceptions = new ArrayList<TypeInfo>();
     this.exceptions = exceptions;
     foreach (var t in genericMethodDefinition.Exceptions) {
         exceptions.add(ReflectionHelper.getRawType(genericMethodDefinition.DeclaringType, t));
     }
 }