protected MethodBase(string name, ParameterInfo[] parameters, MethodAttributes methodAttributes, Attribute[] attributes) : base(name, attributes)
{
this.parameters = parameters;
this.methodAttributes = methodAttributes;
isPublic = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public;
isPrivate = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private;
isFamily = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family;
isAssembly = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assembly;
isFamilyAndAssembly = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem;
isFamilyOrAssembly = (methodAttributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem;
isStatic = (methodAttributes & MethodAttributes.Static) != MethodAttributes.PrivateScope;
isFinal = (methodAttributes & MethodAttributes.Final) != MethodAttributes.PrivateScope;
isVirtual = (methodAttributes & MethodAttributes.Virtual) != MethodAttributes.PrivateScope;
isAbstract = (methodAttributes & MethodAttributes.Abstract) != MethodAttributes.PrivateScope;
foreach (var parameter in parameters)
parameter.containingMember = this;
}