**Lesson learned**: When you need to pass Lists, Maps, Objects – basically anything other than primitives – convert them to a String.
In my case, I was passing a List of Objects from my Lightning component to my Apex method. The error that I found in the debug log for my Apex method was:
```
FATAL_ERROR|System.UnexpectedException: null External entry point
```
What made it especially hard to debug this was that the error occurred deep in my Apex method and not when the Apex method first started or when the parameter was first used. Debug statements printed out the value of the parameter perfectly! It took me quite a while to figure out the cause of this error.
**The Solution:**
In your Lightning component, use JSON.stringify to convert your object to a String:
```
action.setParams({ strFilters : JSON.stringify(component.get("v.lstFilters")) });
```
In your Apex method, convert it back:
```
MyClass[] lstFilters = (List<MyClass>)System.JSON.deserializeStrict(strFilters, List<MyClass>.Class);
```