In Ripper.java for the Ripper-Core, inside of ripComponent, extractProperties is called before performing any actions. This will check if there are children and construct either a ComponentType or a ContainerType depending on if there are children. Then it pushes a button to find additional elements.
The problem occurs in an example like Notepad with the Windows plugin. If it is looking at the File button, it has no children. It creates a ComponentType. Then it pushes the button and File suddenly has children. It tries to cast this to a ContainerType at the end of the function, leading to an unsafe cast.
A possible fix is to call extractProperties after pushing the button. Attached is the patch to do this.
This may cause a problem if pushing the button causes a destructive action to occur. But calling extractProperties before pushing the button causes a problem when a constructive action occurs (which is far more common). Destructive actions can be avoided using ignored components.
Forgot to add. This causes a huge problem because anytime the ClassCastException happens, none of those nodes get added to the GUI xml file that's output. So none of the file menu bars were getting ripped by the Windows ripper.
The proposed fix was implemented. The ClassCastException is gone.