public static bool IsBehavior(this IDeclaredElement element)
 {
     return(element.IsValidFieldOfType(typeof(Behaves_like <>)) &&
            element.GetFirstGenericArgument() != null &&
            element.GetFirstGenericArgument().GetFirstGenericArgument() == null &&
            element.GetFirstGenericArgument().HasAttributeInstance(
                new CLRTypeName(typeof(BehaviorsAttribute).FullName), false));
 }
 public static bool IsBehavior(this IDeclaredElement element)
 {
     return(element.IsValidFieldOfType(new BehaviorDelegateAttributeFullName()) &&
            element.GetFirstGenericArgument() != null &&
            element.GetFirstGenericArgument().GetFirstGenericArgument() == null &&
            element.GetFirstGenericArgument().HasAttributeInstance(
                new CLRTypeName(new BehaviorAttributeFullName()), false));
 }
    public IEnumerable<BehaviorSpecificationElement> CreateBehaviorSpecificationsFromBehavior(BehaviorElement behavior,
                                                                                              IDeclaredElement behaviorSpecification)
    {
      IClass typeContainingBehaviorSpecifications = behaviorSpecification.GetFirstGenericArgument();

      foreach (IField specification in typeContainingBehaviorSpecifications.GetBehaviorSpecifications())
      {
        yield return CreateBehaviorSpecification(behavior, specification);
      }
    }
        public IEnumerable <BehaviorSpecificationElement> CreateBehaviorSpecificationsFromBehavior(BehaviorElement behavior,
                                                                                                   IDeclaredElement behaviorSpecification)
        {
            IClass typeContainingBehaviorSpecifications = behaviorSpecification.GetFirstGenericArgument();

            foreach (IField specification in typeContainingBehaviorSpecifications.GetBehaviorSpecifications())
            {
                yield return(CreateBehaviorSpecification(behavior, specification));
            }
        }