public ArrayList<Location> SomeNeighbors(Location loc, int dir, Player owner)
	{
		ArrayList<Location> NeighborList = new ArrayList<Location>();
		Edge curEdge;
		Location oppLoc;

		// Find all edges that hold this location
		for (int i=0; i < edge_list.size(); i++)
		{
			curEdge = edge_list.get(i);
			oppLoc = curEdge.GetOpposite(loc);
	
			// If the edge has the location, add the adjacent location to the list.
			// Make sure it matches directional and player owned conditions.
			if (curEdge.HasLocation(loc) && curEdge.GetAlignment() == dir)
			{
				// If we want the owner to be null (aka no piece located there),
				// add the location if it holds no piece.
				if(owner == null && oppLoc.getPiece() == null)
					NeighborList.add(curEdge.GetOpposite(loc));
				// We want there to be a piece in the location owned by a particular owner.
				else if(oppLoc.getPiece() != null && oppLoc.getPiece().getOwner() == owner)
					NeighborList.add(curEdge.GetOpposite(loc));
	
			}
		}

		return NeighborList;
	}