Program: 55037
Project: 55037
Buggy source:
@Override public void onReceive(String channel,byte[] dataRaw,List<Value> data){
  if (channel.equals(this.groupDevice) || channel.equals(this.group)) {
    String command=data.get(1).asRawValue().getString();
    Log.d(TAG,String.format("String_Node_Str",channel,command));
    if (command.equals("String_Node_Str")) {
      Value[] files=data.get(2).asMapValue().getKeyValueArray();
      String path=null;
      for (int i=0; i < files.length / 2; i++) {
        String name=files[i * 2].asRawValue().getString();
        String pathCur=Utils.SaveData(files[i * 2 + 1].asRawValue().getByteArray(),"String_Node_Str",false,name);
        if (name.equals("String_Node_Str"))         path=pathCur;
      }
      if (path != null) {
        Utils.eventBusPost(new ScriptEvent(path));
      }
 else {
        Log.w(TAG,"String_Node_Str");
      }
    }
 else     if (command.equals("String_Node_Str")) {
      Utils.eventBusPost(new LambdaEvent(data.get(2).asRawValue().getString()));
    }
 else     if (command.equals("String_Node_Str")) {
      shutdown();
      String error=data.get(2).asRawValue().getString();
      Log.e(TAG,"String_Node_Str" + error);
      Utils.eventBusPost(new SayEvent(error,true));
    }
 else     if (command.equals("String_Node_Str")) {
      int versionExpected=1;
      int version=data.get(2).asIntegerValue().getInt();
      if (version != versionExpected) {
        Utils.eventBusPost(new SayEvent("String_Node_Str" + version + "String_Node_Str"+ versionExpected+ "String_Node_Str",true));
      }
    }
 else     if (channel.equals("String_Node_Str")) {
      Log.setDsn(data.get(1).asRawValue().getString());
    }
  }
  if (channel.equals(GIST_LIST_SYNC_CHAN)) {
    Log.d(TAG,"String_Node_Str" + data.get(1).toString());
    for (    Value v : data.get(1).asArrayValue()) {
      Value gistid=(Value)toMap(v).get("String_Node_Str");
      if (gistid != null) {
        Log.d(TAG,"String_Node_Str" + gistid);
        Utils.eventBusPost(new SendEvent("String_Node_Str","String_Node_Str",GIST_GET_SYNC_CHAN,gistid.asRawValue().getString()));
      }
    }
  }
  if (channel.equals(GIST_GET_SYNC_CHAN)) {
    Log.d(TAG,"String_Node_Str" + data.get(1).toString());
    TreeMap<String,Value> gist=toMap(data.get(1));
    TreeMap<String,Value> files=toMap(gist.get("String_Node_Str"));
    String gistid=gist.get("String_Node_Str").asRawValue().getString();
    for (    Value v : files.values()) {
      TreeMap<String,Value> file=toMap(v);
      byte[] content=file.get("String_Node_Str").asRawValue().getByteArray();
      String filename=file.get("String_Node_Str").asRawValue().getString();
      String pathCur=Utils.SaveData(content,"String_Node_Str" + gistid,false,filename);
      Log.d(TAG,"String_Node_Str" + filename + "String_Node_Str"+ gistid);
    }
  }
  makeCall(channel,"String_Node_Str" + Base64.encodeToString(dataRaw,Base64.NO_WRAP) + "String_Node_Str");
}

Fixed version (ground truth):
@Override public void onReceive(String channel,byte[] dataRaw,List<Value> data){
  if (channel.equals(this.groupDevice) || channel.equals(this.group)) {
    String command=data.get(1).asRawValue().getString();
    Log.d(TAG,String.format("String_Node_Str",channel,command));
    if (command.equals("String_Node_Str")) {
      Value[] files=data.get(2).asMapValue().getKeyValueArray();
      String path=null;
      for (int i=0; i < files.length / 2; i++) {
        String name=files[i * 2].asRawValue().getString();
        String pathCur=Utils.SaveData(files[i * 2 + 1].asRawValue().getByteArray(),"String_Node_Str",false,name);
        if (name.equals("String_Node_Str"))         path=pathCur;
      }
      if (path != null) {
        Utils.eventBusPost(new ScriptEvent(path));
      }
 else {
        Log.w(TAG,"String_Node_Str");
      }
    }
 else     if (command.equals("String_Node_Str")) {
      Utils.eventBusPost(new LambdaEvent(data.get(2).asRawValue().getString()));
    }
 else     if (command.equals("String_Node_Str")) {
      shutdown();
      String error=data.get(2).asRawValue().getString();
      Log.e(TAG,"String_Node_Str" + error);
      Utils.eventBusPost(new SayEvent(error,true));
    }
 else     if (command.equals("String_Node_Str")) {
      int versionExpected=1;
      int version=data.get(2).asIntegerValue().getInt();
      if (version != versionExpected) {
        Utils.eventBusPost(new SayEvent("String_Node_Str" + version + "String_Node_Str"+ versionExpected+ "String_Node_Str",true));
      }
    }
 else     if (channel.equals("String_Node_Str")) {
      Log.setDsn(data.get(1).asRawValue().getString());
    }
  }
  if (channel.equals(GIST_LIST_SYNC_CHAN)) {
    Log.d(TAG,"String_Node_Str" + data.get(1).toString());
    for (    Value v : data.get(1).asArrayValue()) {
      Value gistid=(Value)toMap(v).get("String_Node_Str");
      if (gistid != null) {
        Log.d(TAG,"String_Node_Str" + gistid);
        Utils.eventBusPost(new SendEvent("String_Node_Str","String_Node_Str",GIST_GET_SYNC_CHAN,gistid.asRawValue().getString()));
      }
    }
  }
  Log.d(TAG,"String_Node_Str" + channel);
  testHandler(data);
  if (channel.equals(GIST_GET_SYNC_CHAN)) {
    Log.d(TAG,"String_Node_Str" + data.get(1).toString());
    TreeMap<String,Value> gist=toMap(data.get(1));
    TreeMap<String,Value> files=toMap(gist.get("String_Node_Str"));
    String gistid=gist.get("String_Node_Str").asRawValue().getString();
    for (    Value v : files.values()) {
      TreeMap<String,Value> file=toMap(v);
      byte[] content=file.get("String_Node_Str").asRawValue().getByteArray();
      String filename=file.get("String_Node_Str").asRawValue().getString();
      String pathCur=Utils.SaveData(content,"String_Node_Str" + gistid,false,filename);
      Log.d(TAG,"String_Node_Str" + filename + "String_Node_Str"+ gistid);
    }
  }
  makeCall(channel,"String_Node_Str" + Base64.encodeToString(dataRaw,Base64.NO_WRAP) + "String_Node_Str");
}