La clase es inaccesible debido a su nivel de protección

Tengo tres clases todos son parte del mismo espacio de nombres. Aquí están los conceptos básicos de las tres clases.

//FBlock.cs
namespace StubGenerator.PropGenerator
{
    class FBlock : IDesignRegionInserts, IFormRegionInserts, IAPIRegionInserts,  IConfigurationInserts, ISoapProxyClientInserts, ISoapProxyServiceInserts
    {
        private List<Property> pProperties;
        private List<Method> pMethods;
        public FBlock(string aFBlockName)
        { 
            pProperties = new List<Property>();
            pMethods = new List<Method>();
        }

        public Property AddProperty(string aName)
        {
            Property loProp = new Property(this, aName, pProperties.Count);
            pProperties.Add(loProp);
            return loProp;
         }

         public Method AddMethod(string aName)
         {
             Method loMeth = new Method(this, aName);
             pMethods.Add(loMeth);
             return loMeth;
         }
     }

 //Method.cs
 namespace StubGenerator.PropGenerator
 {
     class Method : IPropertyName
     {
         private List<StubGenerator.PropGenerator.PropertyAttribute> pPropertyAttributes;
         private string pName;
         private string pFBlockName;

         public Method(FBlock aFBlock,string aName)
         {
             pPropertyAttributes = new List<PropertyAttribute>();
             pName = aName;
             pFBlockName = aFBlock.Name;
         }
      }
 }

 //Property.cs
 namespace StubGenerator.PropGenerator
 {
    class Property : StubGenerator.PropGenerator.IPropertyName, StubGenerator.PropGenerator.IDesignRegionInserts, StubGenerator.PropGenerator.IFormRegionInserts, IAPIRegionInserts, IConfigurationInserts, ISoapProxyClientInserts, ISoapProxyServiceInserts
    {
        private string pName;
        private string pExpandedName;
        private string pFBlockInitials;

        private Group pPropertyGroup;
        private FlowLayoutPanel pGroupFlowPanel;
        private Button pUpdateButton;
        private CheckBox pShowProperty;


         private string pFBlockName;


         public Property(FBlock aFBlock, string aName, int aIndex)
         {
             pPropertyAttributes = new List<PropertyAttribute>();
             pFBlockName = aFBlock.FBlockName;

             ExpandName();
             GetInitials();

             pShowProperty = new CheckBox(this, 10, (aIndex + 1) * 20, aIndex);
             pPropertyGroup = new Group(this);
             pGroupFlowPanel = new FlowLayoutPanel(this);

             pUpdateButton = new Button(this, 10, 18, aIndex);
         }
     }
}

Recibo los siguientes errores

'StubGenerator.PropGenerator.Method' es inaccesible debido a su nivel de protección

que se refiere a la siguiente línea en el archivo FBlock.cs

private List<Method> pMethods;

y

'StubGenerator.PropGenerator.Method' es inaccesible debido a su nivel de protección

que se refiere a la siguiente línea en el archivo FBlock.cs

 public Method AddMethod(string aName)

y

Accesibilidad inconsistente: el tipo de retorno 'StubGenerator.PropGenerator.Method' es menos accesible que el método 'StubGenerator.PropGenerator.FBlock.AddMethod (string)'

que se refiere a la siguiente línea en el archivo FBlock.cs

 public Method AddMethod(string aName)

hacer público el método de clase no resuelve los errores. No puedo entender por qué no obtengo los errores al llamar a la clase Property. Y no entiendo por qué hacer pública la clase Método no soluciona el problema.

¿Algunas ideas?

Editado para preguntar. ¿podría haber alguna configuración en el archivo que cause esto?

Respuestas a la pregunta(8)

Su respuesta a la pregunta