Eric,
Look for useful utilities and classes for instance models in package org.osate.aadl2.instance.util;
You will want to sub-class InstanceSwitch<T> found in InstanceSwitch.java
Override caseInstanceObject to add each InstanceObject to a vector if it is a subprogram.
You may need to override some of the other methods, too, so doSwitch walks the instance model tree to caseInstanceObject without stopping early.
Switches are tricky to use, but they are auto-generated to match the EMF metamodel, so can be slick when processing EMF models like the instance model.
Once you get the hang of switches you will be able to easily extract what you need from an instance model.
--Brian