Why does this not work...
public ArrayList getEdges() { return A; //A is an Arraylist of type \'Action\'. Action implements Ed
Because the generic type must always be the same, not something that extends from it you can rewrite like this for it to work:
public ArrayList extends Edge> getEdges() { return A; //A is an Arraylist of type 'Action'. Action implements Edge. }