/**
   * @param contributeeParam - the parameter number which corresponds to the contributee, and so
   *     should be suppressed.
   */
  public ObjectActionContributee(
      final ObjectAdapter serviceAdapter,
      final ObjectActionImpl serviceAction,
      final int contributeeParam,
      final ObjectSpecification contributeeType,
      final ObjectMemberDependencies objectMemberDependencies) {
    super(serviceAction.getFacetedMethod(), objectMemberDependencies);

    this.serviceAdapter = serviceAdapter;
    this.serviceAction = serviceAction;
    this.contributeeType = contributeeType;
    this.contributeeParam = contributeeParam;

    // copy over facets from contributed to own.
    FacetUtil.copyFacets(serviceAction.getFacetedMethod(), facetHolder);

    // calculate the identifier
    final Identifier contributorIdentifier = serviceAction.getFacetedMethod().getIdentifier();
    final String memberName = contributorIdentifier.getMemberName();
    List<String> memberParameterNames = contributorIdentifier.getMemberParameterNames();
    identifier =
        Identifier.actionIdentifier(
            getOnType().getCorrespondingClass().getName(), memberName, memberParameterNames);
  }