Program: 158018
Project: 158018
Buggy source:
@Override public boolean apply(Game game,Ability source){
  Player player=game.getPlayer(source.getControllerId());
  if (source == null || source.getCosts() == null) {
    return false;
  }
  FilterCard filter=new FilterCreatureCard("String_Node_Str");
  for (  Cost cost : source.getCosts()) {
    if (cost instanceof CrypticGatewayCost) {
      UUID id=((CrypticGatewayCost)cost).getTargetCreatureId();
      UUID id2=((CrypticGatewayCost)cost).getTargetCreatureId2();
      Permanent creature=game.getPermanentOrLKIBattlefield(id);
      Permanent creature2=game.getPermanentOrLKIBattlefield(id2);
      if (creature == null || creature2 == null) {
        return false;
      }
      boolean commonSubType=false;
      boolean changeling=false;
      boolean changeling2=false;
      if (creature.getAbilities().containsKey(ChangelingAbility.getInstance().getId()) || creature.getSubtype(game).contains(ChangelingAbility.ALL_CREATURE_TYPE)) {
        changeling=true;
      }
      if (creature2.getAbilities().containsKey(ChangelingAbility.getInstance().getId()) || creature2.getSubtype(game).contains(ChangelingAbility.ALL_CREATURE_TYPE)) {
        changeling2=true;
      }
      ArrayList<SubtypePredicate> subtypes=new ArrayList<>();
      for (      String subtype : creature.getSubtype(game)) {
        if (creature2.getSubtype(game).contains(subtype) || changeling2) {
          subtypes.add(new SubtypePredicate(subtype));
          commonSubType=true;
        }
      }
      for (      String subtype : creature2.getSubtype(game)) {
        if (creature.getSubtype(game).contains(subtype) || changeling) {
          subtypes.add(new SubtypePredicate(subtype));
          commonSubType=true;
        }
      }
      if (changeling && changeling2) {
        filter=new FilterCreatureCard("String_Node_Str");
      }
 else       if (commonSubType) {
        filter.add(Predicates.or(subtypes));
      }
      if (commonSubType) {
        PutPermanentOnBattlefieldEffect putIntoPlay=new PutPermanentOnBattlefieldEffect(filter);
        putIntoPlay.apply(game,source);
      }
    }
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean apply(Game game,Ability source){
  Player player=game.getPlayer(source.getControllerId());
  if (source == null || source.getCosts() == null) {
    return false;
  }
  FilterCard filter=new FilterCreatureCard("String_Node_Str");
  for (  Cost cost : source.getCosts()) {
    if (cost instanceof CrypticGatewayCost) {
      UUID id=((CrypticGatewayCost)cost).getTargetCreatureId();
      UUID id2=((CrypticGatewayCost)cost).getTargetCreatureId2();
      Permanent creature=game.getPermanentOrLKIBattlefield(id);
      Permanent creature2=game.getPermanentOrLKIBattlefield(id2);
      if (creature == null || creature2 == null) {
        return false;
      }
      boolean commonSubType=false;
      boolean changeling=false;
      boolean changeling2=false;
      if (creature.getAbilities().containsKey(ChangelingAbility.getInstance().getId()) || creature.getSubtype(game).contains(ChangelingAbility.ALL_CREATURE_TYPE)) {
        changeling=true;
      }
      if (creature2.getAbilities().containsKey(ChangelingAbility.getInstance().getId()) || creature2.getSubtype(game).contains(ChangelingAbility.ALL_CREATURE_TYPE)) {
        changeling2=true;
      }
      ArrayList<SubtypePredicate> subtypes=new ArrayList<>();
      for (      String subtype : creature.getSubtype(game)) {
        if (creature2.getSubtype(game).contains(subtype) || changeling2) {
          subtypes.add(new SubtypePredicate(SubType.byDescription(subtype)));
          commonSubType=true;
        }
      }
      for (      String subtype : creature2.getSubtype(game)) {
        if (creature.getSubtype(game).contains(subtype) || changeling) {
          subtypes.add(new SubtypePredicate(SubType.byDescription(subtype)));
          commonSubType=true;
        }
      }
      if (changeling && changeling2) {
        filter=new FilterCreatureCard("String_Node_Str");
      }
 else       if (commonSubType) {
        filter.add(Predicates.or(subtypes));
      }
      if (commonSubType) {
        PutPermanentOnBattlefieldEffect putIntoPlay=new PutPermanentOnBattlefieldEffect(filter);
        putIntoPlay.apply(game,source);
      }
    }
  }
  return false;
}