internal bool IsAccessibleFrom(TypeWrapper referencedType, TypeWrapper caller, TypeWrapper instance)
{
if(referencedType.IsAccessibleFrom(caller))
{
return (
caller == DeclaringType ||
IsPublicOrProtectedMemberAccessible(caller, instance) ||
(IsInternal && DeclaringType.InternalsVisibleTo(caller)) ||
(!IsPrivate && DeclaringType.IsPackageAccessibleFrom(caller)))
// The JVM supports accessing members that have non-public types in their signature from another package,
// but the CLI doesn't. It would be nice if we worked around that by emitting extra accessors, but for now
// we'll simply disallow such access across assemblies (unless the appropriate InternalsVisibleToAttribute exists).
&& ((flags & MemberFlags.NonPublicTypeInSignature) == 0 || InPracticeInternalsVisibleTo(caller));
}
return false;
}