public boolean add(ConstrainedElement constrainedElement) {
      boolean added = false;

      if (methodBuilder != null && methodBuilder.accepts(constrainedElement)) {
        methodBuilder.add(constrainedElement);
        added = true;
      }

      if (propertyBuilder != null && propertyBuilder.accepts(constrainedElement)) {
        propertyBuilder.add(constrainedElement);

        if (!added
            && constrainedElement.getKind() == ConstrainedElementKind.METHOD
            && methodBuilder == null) {
          ConstrainedExecutable constrainedMethod = (ConstrainedExecutable) constrainedElement;
          methodBuilder =
              new ExecutableMetaData.Builder(
                  beanClass, constrainedMethod, constraintHelper, executableHelper);
        }

        added = true;
      }

      return added;
    }
    public Set<ConstraintMetaData> build() {
      Set<ConstraintMetaData> metaDataSet = newHashSet();

      if (propertyBuilder != null) {
        metaDataSet.add(propertyBuilder.build());
      }

      if (methodBuilder != null) {
        metaDataSet.add(methodBuilder.build());
      }

      return metaDataSet;
    }